#ifndef PROPIEDADESNIVEL_H_
#define PROPIEDADESNIVEL_H_

#include <gtkmm/filechooserbutton.h>
#include "VentanaSalidaPajaros.h"
#include "VentanaPiso.h"
#include "Lienzo.h"
#include "Nivel.h"
#include "InfoMovimiento.h"
#include "Piso.h"

class PropiedadesNivel : public Gtk::Grid {
public:

    PropiedadesNivel();
    ~PropiedadesNivel();

    unsigned getId() const;
    void decId();
    static void resetarContadorId();
    unsigned getMaxAnchura() const;
    unsigned getMaxAltura() const;
    Lienzo* getLienzoNivel() const;

    void agregarLineaSalidaPajaros(const struct InfoMov &info);
    void agregarPiso(Piso *piso);

    Nivel* guardar();
    void cargar(Nivel *nivel);

private:

    class LineaSalidaPajaros {
    public:
        LineaSalidaPajaros(const struct InfoMov &info);
        ~LineaSalidaPajaros();

        struct InfoMov info_generacion;
    };

    void eliminarSalidasPajaros();
    void eliminarPiso();

    void on_id_changed();
    void on_file_set();
    void on_anchura_value_changed();
    void on_altura_value_changed();
    void on_button_generador_clicked();
    void on_button_piso_clicked();


    static unsigned contador_id;
    unsigned id;

    Gtk::Label *d_Label_idNivel;
    Gtk::FileChooserButton d_FileChooserButton_imagen;
    Gtk::Button d_Button_salidaPajaros, d_Button_piso;
    Glib::RefPtr<Gtk::Adjustment> ajuste_anchura, ajuste_altura, ajuste_tiempo;
    Gtk::SpinButton d_SpinButton_anchura, d_SpinButton_altura,
    d_SpinButton_tiempo;

    std::vector<LineaSalidaPajaros*> vec_salidaPajaros;
    std::vector<Piso*> vec_pisos;

    VentanaSalidaPajaros *d_window_salidaPajaros;
    VentanaPiso *d_window_piso;

    Lienzo *lienzo_nivel;
};

#endif